/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.trandio.manager;

import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.trandio.dao.*;
import org.trandio.model.*;

/**
 *
 * @author root
 */
public class AdministrarEditServlet extends HttpServlet {

    EntidadInterface entidadInterface;
    GrupoactInterface grupoactInterface;
    MedicoInterface medicoInterface;
    ManualInterface manualInterface;
    ActividadInterface actividadInterface;
    ContratoInterface contratoInterface;
    PacienteInterface pacienteInterface;
    ProgramapypInterface programapypInterface;
    ActividadpypInterface actividadpypInterface;
    CuentaCobroInterface cuentaCobroInterface;
    PrestadorInterface prestadorInterface;
    EntidadVO entidadVO;
    GrupoactVO grupoactVO;
    MedicoVO medicoVO;
    ManualVO manualVO;
    ActividadVO actividadVO;
    ActividadpypVO actividadpypVO;
    ContratoVO contratoVO;
    PacienteVO pacienteVO;
    ProgramapypVO programapypVO;
    CuentaCobroVO cuentaCobroVO;
    PrestadorVO prestadorVO;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            int opcion = Integer.parseInt(request.getParameter("op"));
            int id = Integer.parseInt(request.getParameter("id"));
            String resp = "";
            entidadInterface = new EntidadDAO();
            grupoactInterface = new GrupoactDAO();
            medicoInterface = new MedicoDAO();
            manualInterface = new ManualDAO();
            actividadInterface = new ActividadDAO();
            contratoInterface = new ContratoDAO();
            pacienteInterface = new PacienteDAO();
            programapypInterface = new ProgramapypDAO();
            actividadpypInterface = new ActividadpypDAO();
            cuentaCobroInterface = new CuentaCobroDAO();
            prestadorInterface = new PrestadorDAO();

            switch (opcion) {
                case 1:
                    try {
                        entidadVO = entidadInterface.getEntidad(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + entidadVO.getId()
                            + "\",\"codigo\":\"" + entidadVO.getCodigo()
                            + "\",\"descripcion\":\"" + entidadVO.getDescripcion()
                            + "\",\"direccion\":\"" + entidadVO.getDireccion()
                            + "\",\"telefono\":\"" + entidadVO.getTelefono()
                            + "\",\"id_depto\":\"" + entidadVO.getId_departamento()
                            + "\",\"id_mupio\":\"" + entidadVO.getId_municipio() + "\"}";
                    out.println(resp);
                    break;

                case 2:
                    try {
                        grupoactVO = grupoactInterface.getGrupoact(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + grupoactVO.getId()
                            + "\",\"codigo\":\"" + grupoactVO.getCodigo()
                            + "\",\"descripcion\":\"" + grupoactVO.getDescripcion()
                            + "\",\"id_centro_costo\":\"" + grupoactVO.getCentro_costo() + "\"}";
                    out.println(resp);
                    break;

                case 3:
                    try {
                        medicoVO = medicoInterface.getMedico(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + medicoVO.getId()
                            + "\",\"id_tipo_ide\":\"" + medicoVO.getId_tipo_identificacion()
                            + "\",\"identificacion\":\"" + medicoVO.getIdentificacion()
                            + "\",\"nombre1\":\"" + medicoVO.getNombre1()
                            + "\",\"nombre2\":\"" + medicoVO.getNombre2()
                            + "\",\"apellido1\":\"" + medicoVO.getApellido1()
                            + "\",\"apellido2\":\"" + medicoVO.getApellido2()
                            + "\",\"numero_registro\":\"" + medicoVO.getRegistro()
                            + "\",\"id_especialidad\":\"" + medicoVO.getId_especialidad() + "\"}";
                    out.println(resp);
                    break;

                case 4:

                    try {
                        manualVO = manualInterface.getManual(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + manualVO.getId()
                            + "\",\"codigo\":\"" + manualVO.getCodigo()
                            + "\",\"descripcion\":\"" + manualVO.getDescripcion()
                            + "\",\"id_manual_base\":\"" + manualVO.getIdbase() + "\"}";
                    out.println(resp);
                    break;

                case 5:

                    actividadVO = new ActividadVO();

                    try {
                        actividadVO = actividadInterface.getActividad(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }


                    //Gson gson = new Gson();

                    //resp = gson.toJson(actividadVO);
                    resp = "{\"id\":\"" + actividadVO.getId()
                            + "\",\"codigo\":\"" + actividadVO.getCodigo()
                            + "\",\"descripcion\":\"" + actividadVO.getDescripcion()
                            + "\",\"id_grupoqx\":\"" + actividadVO.getGrupo_qx()
                            + "\",\"id_manual\":\"" + actividadVO.getManual()
                            + "\",\"id_grupo_actividad\":\"" + actividadVO.getGrupo_funcional()
                            + "\",\"id_tipo_registro\":\"" + actividadVO.getTipo_registro()
                            + "\",\"id_centro_costo\":\"" + actividadVO.getCentro_costo()
                            + "\",\"insumo\":\"" + actividadVO.isInsumo()
                            + "\",\"ripestancia\":\"" + actividadVO.isRipestancia()
                            + "\",\"riprn\":\"" + actividadVO.isRiprn()
                            + "\",\"doblevia\":\"" + actividadVO.isDoblevia()
                            + "\",\"edad1\":\"" + actividadVO.getEdadini()
                            + "\",\"medida1\":\"" + actividadVO.getMedida1()
                            + "\",\"edad2\":\"" + actividadVO.getEdadfin()
                            + "\",\"medida2\":\"" + actividadVO.getMedida2()
                            + "\",\"habilitada\":\"" + actividadVO.isHabilitada()
                            + "\",\"id_sexo\":\"" + actividadVO.getSexo()
                            + "\",\"id_especialidad\":\"" + actividadVO.getId_especialidad() + "\"}";
                    out.println(resp);
                    break;

                case 6:

                    contratoVO = new ContratoVO();

                    try {
                        contratoVO = contratoInterface.getContrato(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + contratoVO.getId()
                            + "\",\"codigo\":\"" + contratoVO.getCodigo()
                            + "\",\"descripcion\":\"" + contratoVO.getDescripcion()
                            + "\",\"id_entidad\":\"" + contratoVO.getEntidad()
                            + "\",\"id_manual\":\"" + contratoVO.getManual()
                            + "\",\"id_tipo_contrato\":\"" + contratoVO.getTipo()
                            + "\",\"id_regimen\":\"" + contratoVO.getRegimen()
                            + "\",\"id_tipo_doc\":\"" + contratoVO.getTipo_doc()
                            + "\",\"fechaini\":\"" + contratoVO.getInicio()
                            + "\",\"fechafin\":\"" + contratoVO.getFin()
                            + "\",\"monto_fac\":\"" + contratoVO.getMonto_fac()
                            + "\",\"monto_cap\":\"" + contratoVO.getMonto_cap()
                            + "\",\"porc\":\"" + contratoVO.getPorc_alarma()
                            + "\",\"upcanual\":\"" + contratoVO.getUpc_anual()
                            + "\",\"upcmes\":\"" + contratoVO.getUpc_mensual()
                            + "\",\"modelo\":\"" + contratoVO.isModelo()
                            + "\",\"pyp\":\"" + contratoVO.isPyp()
                            + //"\",\"gen\":\""+contratoVO.isHabilitada()+
                            "\",\"activo\":\"" + contratoVO.isActivo() + "\"}";


                    out.println(resp);
                    break;


                case 7:

                    pacienteVO = new PacienteVO();

                    try {
                        pacienteVO = pacienteInterface.getPaciente(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + pacienteVO.getId()
                            + "\",\"id_tipo_ide\":\"" + pacienteVO.getId_tipo_identificacion()
                            + "\",\"identificacion\":\"" + pacienteVO.getNumero_identificacion()
                            + "\",\"nombre1\":\"" + pacienteVO.getNombre1()
                            + "\",\"nombre2\":\"" + pacienteVO.getNombre2()
                            + "\",\"apellido1\":\"" + pacienteVO.getApellido1()
                            + "\",\"apellido2\":\"" + pacienteVO.getApellido2()
                            + "\",\"fecha_nac\":\"" + pacienteVO.getFecha_nacimiento()
                            + "\",\"idsexo\":\"" + pacienteVO.getId_sexo()
                            + "\",\"id_depto\":\"" + pacienteVO.getId_departamento()
                            + "\",\"id_mupio\":\"" + pacienteVO.getId_municipio()
                            + "\",\"zona\":\"" + pacienteVO.getId_zona()
                            + "\",\"fecha_eps\":\"" + pacienteVO.getFecha_afil_ars()
                            + "\",\"id_tipo_poblacion\":\"" + pacienteVO.getId_tipopoblacion()
                            + "\",\"id_nivel\":\"" + pacienteVO.getId_nivel()
                            + "\",\"direccion\":\"" + pacienteVO.getDireccion()
                            + "\",\"telefono\":\"" + pacienteVO.getTelefono()
                            + "\",\"id_entidad\":\"" + pacienteVO.getId_entidad()
                            + "\",\"estp\":\"" + pacienteVO.isEstp() + "\"}";

                    out.println(resp);
                    break;

                case 8:
                    try {
                        programapypVO = programapypInterface.getProgramapyp(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + programapypVO.getId()
                            + "\",\"codigo\":\"" + programapypVO.getCodigo()
                            + "\",\"descripcion\":\"" + programapypVO.getDescripcion() + "\"}";
                    out.println(resp);
                    break;

                case 9:

                    actividadpypVO = new ActividadpypVO();

                    try {
                        actividadpypVO = actividadpypInterface.getActividadpyp(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + actividadpypVO.getId()
                            + "\",\"codigo\":\"" + actividadpypVO.getCodigo()
                            + "\",\"descripcion\":\"" + actividadpypVO.getDescripcion()
                            + "\",\"frecuencia\":\"" + actividadpypVO.getFrecuencia()
                            + "\",\"id_actcups\":\"" + actividadpypVO.getIdcups()
                            + "\",\"id_actsoat\":\"" + actividadpypVO.getIdsoat()
                            + "\",\"id_fincn\":\"" + actividadpypVO.getIdfincn()
                            + "\",\"id_finpx\":\"" + actividadpypVO.getIdfinpx()
                            + "\",\"id_programapyp\":\"" + actividadpypVO.getPrograma()
                            + "\",\"edad1\":\"" + actividadpypVO.getEdadini()
                            + "\",\"medida1\":\"" + actividadpypVO.getMedida1()
                            + "\",\"edad2\":\"" + actividadpypVO.getEdadfin()
                            + "\",\"medida2\":\"" + actividadpypVO.getMedida2()
                            + "\",\"habilitada\":\"" + actividadpypVO.isHabilitada()
                            + "\",\"cantidad\":\"" + actividadpypVO.getCantidad()
                            + "\",\"tiempo\":\"" + actividadpypVO.getTiempo()
                            + "\",\"id_actividad\":\"" + actividadpypVO.getIdactividad()
                            + "\",\"id_diagnostico\":\"" + actividadpypVO.getIddiagnostico()
                            + "\",\"frecuencia_sesion\":\"" + actividadpypVO.getCantidadsesion()
                            + "\",\"id_sexo\":\"" + actividadpypVO.getSexo() + "\"}";

                    out.println(resp);
                    break;

                case 10:
                    try {
                        manualVO = manualInterface.getManual(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + manualVO.getId()
                            + "\",\"codigo\":\"" + manualVO.getCodigo()
                            + "\",\"descripcion\":\"" + manualVO.getDescripcion()
                            + "\",\"id_manual_base\":\"" + manualVO.getIdbase() + "\"}";
                    out.println(resp);
                    break;

                case 11:
                    try {
                        cuentaCobroVO = cuentaCobroInterface.getCuentaCobro(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }


                    resp = "{\"id\":\"" + cuentaCobroVO.getId()
                            + "\",\"numero\":\"" + cuentaCobroVO.getNumero()
                            + "\",\"entidad\":\"" + cuentaCobroVO.getEntidad() + "\"}";
                    out.println(resp);
                    break;


                case 12:

                    contratoInterface = new ContratoDAO();
                    manualInterface = new ManualDAO();
                    try {
                        contratoVO = contratoInterface.getContrato(id);
                        manualVO = manualInterface.getManual(contratoVO.getManual());

                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }


                    resp = "{\"idmanual\":\"" + manualVO.getId()
                            + "\",\"manual\":\"" + manualVO.getDescripcion() + "\"}";


                    out.println(resp);
                    //out.println("{\"manual\":\"" + manualVO.getDescripcion() + "\"}");

                    break;
                    
               case 13:
                    try {
                        prestadorVO = prestadorInterface.getPrestador(id);
                    } catch (SQLException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NamingException ex) {
                        Logger.getLogger(AdministrarEditServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    resp = "{\"id\":\"" + prestadorVO.getId()
                            + "\",\"codigo\":\"" + prestadorVO.getCodigo()
                            + "\",\"razonsocial\":\"" + prestadorVO.getRazonSocial()
                            + "\",\"id_tipoidentificacion\":\"" + prestadorVO.getIdTipoIdentificacion() 
                            + "\",\"numeroidentificacion\":\"" + prestadorVO.getNumeroIdentificacion()
                            + "\",\"nit\":\"" + prestadorVO.getNit()    
                            + "\",\"digitoverificacion\":\"" + prestadorVO.getDigitoVerificacion()   
                            + "\",\"nivel\":\"" + prestadorVO.getNivel()      
                            + "\",\"codigohabilitacion\":\"" + prestadorVO.getCodigoHabilitacion()
                            + "\",\"id_municipio\":\"" + prestadorVO.getIdMunicipio() 
                            + "\",\"direccion\":\"" + prestadorVO.getDireccion()
                            + "\",\"telefono\":\"" + prestadorVO.getTelefono()
                            + "\",\"email\":\"" + prestadorVO.getEmail()+ "\"}";
                    out.println(resp);
                    break;
                    
            }

        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
